#include<stdio.h>
#include<stdlib.h>

#define True 1
#define False 0
typedef struct nod{
	int dat;
	struct nod* nxt;
}nod;

nod* initList(){
	nod* l=(nod*)malloc(sizeof(nod));
	l->dat=0;
	l->nxt=l;
	return l;
}

void hi(nod* l,int dat){
	nod* n=(nod*)malloc(sizeof(nod));
	n->dat=dat;
	n->nxt=l->nxt;
	l->nxt=n;
	l->dat++;
}

void ti(nod* l,int dat){
	nod* n=(nod*)malloc(sizeof(nod));
	n->dat=dat;
	n->nxt=l;
	nod* c=l->nxt;
	while(c->nxt!=l){
		c=c->nxt;
	}
	c->nxt=n;
	l->dat++;
}

int delete(nod*l,int dat){
	nod* n=l->nxt;
	while(n !=l){
		if(n->nxt->dat==dat){
			nod* del=n->nxt;
			n->nxt=n->nxt->nxt;
			free(del);
			return True;
		}
		n=n->nxt;
	}	
	return False;
}

void pl(nod* l){
	nod* n=l->nxt;
	while(n!=l){
		printf("%d ",n->dat);
		n=n->nxt;
	}
	printf("\n");
}


int main(){
	nod* l=initList();
	hi(l,1);
	hi(l,2);
	hi(l,3);
	hi(l,4);
	hi(l,5);
	ti(l,6);
	ti(l,7);
	ti(l,8);
	ti(l,9);
	int res=	delete(l,5);
	printf("\nres5result:%d\n",res);
	delete(l,3);
	delete(l,9);
	pl(l);
	printf("hello world\n");
	return 0;
}
